#pragma once
#include "IGameStateView.h"
#include "SceneManager.h"
#include "WeatherView.h"
#include "ParticleManager.h"

#include "../game/Hud.h"

class InGameState;
/**
=========================================
In Game State View - Draw the map, characters
=========================================
*/
class InGameStateView : public IGameStateView
{
public:
    InGameStateView(void);
    /** Register the ingame state */
    void RegisterState( IGameState* g );
    /** Render this view */
    void Render( IRender *r, ICamera* cam );

    /** Get the current scene */
    Scene* GetCurrentScene() { return sceneMng.GetCurrentScene(); };
    /** Load a map */
    void LoadScene(const std::string &mapfile);

    AUTO_SIZE;
private:
    // scene management
    SceneManager sceneMng;
    // players HUD
    HUD hud;
    // Weather module
    WeatherView     m_weatherView;

    // friend of InGameState
    InGameState* m_inGameState;

    // particle manager
    ParticleManager partMng;
public:
    virtual ~InGameStateView(void);
};
